package x10.eventServices;

import x10.event.X10Event;

/**
 * @author Denny Sheirer
 * @date   2011
 */
public interface X10EventService{
    
    /**
     * receiveEvent() - method invoked by the server's service manager
     * to send received X10Event events to this X10Service to act upon
     * 
     * @param event - X10Event to be processed by this service
     */
    public abstract void receiveEvent(X10Event event);


    /**
     * transmitEvent() - courtesy method that transmits to the 
     * serviceManager any internally generated events, or events 
     * received from children, that need to be transmitted to 
     * all X10Event service listeners
     * 
     * @param event
     */
    public abstract void transmitEvent(X10Event event);
   

    /**
     * getServiceName() - returns the internally defined 
     * name of this service
     * 
     * @return - name of the service
     */
    public String getEventServiceName();
}
